package com.enjoyor.soa.traffic.api.service.dubbo.bigdata;

import com.enjoyor.soa.traffic.util.pojo.ResultPojo;

import java.util.Date;

/**
 * 车辆详情服务
 */
public interface DubboVehicleDetailsService{

	/**
	 *  获取车辆违法事故统计信息
	 * @param licenseType  号牌类型，不允许为空
	 * @param licenseNum   号牌号码，不允许为空
	 * @return VehicleStatDto
	 */
	public ResultPojo getVehicleStat (String token, String licenseType, String licenseNum);



	/**
	 *  获取车辆本年内的事故记录详情
	 * @param licenseType  号牌类型，不允许为空
	 * @param licenseNum   号牌号码，不允许为空
	 * @param beginDay     当年的起始日期，不允许为空
	 * @param endDay       当年的截止日期，不允许为空
	 * @return List &lt; AccidentfoDto &gt;
	 */
	public ResultPojo getThisYearAccidentsDetail (String token, String licenseType, String licenseNum, Date beginDay, Date endDay);

	/**
	 * 获取车辆本年内的违法记录详情
	 * @param licenseType  号牌类型，不允许为空
	 * @param licenseNum   号牌号码，不允许为空
	 * @param beginDay     当年的起始日期，不允许为空
	 * @param endDay       当年的截止日期，不允许为空
	 * @return List &lt; AccidentfoDto &gt;
	 */
	public ResultPojo getThisYearViolationsDetail (String token, String licenseType, String licenseNum, Date beginDay, Date endDay);

	/**
	 *  获取车辆尚未处理的违法记录详情
	 * @param licenseType  号牌类型，不允许为空
	 * @param licenseNum   号牌号码，不允许为空
	 * @return List &lt; AccidentfoDto &gt;
	 */
	public ResultPojo getUndisposedViolationsDetail (String token, String licenseType, String licenseNum);

	/**
	 *获取活跃区域
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime 分析开始日期
	 * @param endTime 分析截止日期
	 * @return Page &lt; VehicleActiveAreaDto
	 */
	public ResultPojo getActiveArear(String token, String licenseType, String licenseNum, Date startTime, Date endTime);
	/**
	 *获取行驶轨迹
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime 分析开始日期
	 * @param endTime 分析截止日期
	 * @return Page &lt; VehicleTrackInfoDto
	 */
	public ResultPojo getTrackInfo(String token, String licenseType, String licenseNum, Date startTime, Date endTime);


    /**
     *  获取具体的轨迹点位
     * @param trackId   公共轨迹标识
     * @return List &lt; PointsDto
     */
	public ResultPojo getTrackPoints (String token, String trackId);
	/**
	 *  获取具体的轨迹点位
	 * @param points
	 * @return List &lt; PointsDto
	 */
	public ResultPojo getTrackPointsByPoints (String token, String points);
    /**
     *  获取车辆经过指定点位的通行记录
     * @param licenseType  号牌类型，不允许为空
     * @param licenseNum   号牌号码，不允许为空
     * @param beginDay     起始日期，不允许为空
     * @param endDay       截止日期，不允许为空
     * @param pointId      卡口点位编码，不允许为空
     * @return List &lt; PassInfoDto
     */
	public ResultPojo getPassByPoint (String token, String licenseType, String licenseNum, String beginDay, String endDay, String pointId);

	/**
	 * 获取车辆经过指定点位指定通行时间的轨迹
	 * @param token
	 * @param licenseType 号牌类型，不允许为空
	 * @param licenseNum 号牌号码，不允许为空
	 * @param passTime 通行时间，不允许为空
	 * @param pointId 卡口点位编码，不允许为空
	 * @return
	 */
	public ResultPojo getPassByPoint(String token, String licenseType, String licenseNum, String passTime, String pointId);

	/**
	 *获取目的地
	 * @param licenseType 号牌类型
	 * @param licenseNum 号牌号码
	 * @param startTime 分析开始日期
	 * @param endTime 分析截止日期
	 * @return Page &lt; VehicleDestinationDto
	 */
	public ResultPojo getDestination(String token, String licenseType, String licenseNum, Date startTime, Date endTime);

}
